package com.hboxs.asl.wechat.entity;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.hboxs.asl.entity.BaseEntity;

import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 * 微信用户基本信息
 */
@Entity
@Table(name = "t_wechat_userinfo")
@SequenceGenerator(name = "sequenceGenerator", sequenceName = "t_wechat_userinfo_sequence")
public class WxUserInfo extends BaseEntity {
    private static final long serialVersionUID = -3118644888148385818L;

    /** 是否订阅 */
    private int subscribe;
    /** 用户标识 */
    private String openid;
    /** 昵称 */
    private String nickname;
    /** 性别 */
    private int sex;
    /** 语言 */
    private String language;
    /** 城市 */
    private String city;
    /** 省份 */
    private String province;
    /** 国家 */
    private String country;
    /** 头像 */
    private String headimgurl;
    /** 关注时间 */
    private long subscribe_time;
    /** 全局标识 */
    private String unionid;
    /** 备注 */
    private String remark;
    /** 分组ID */
    private int groupid;
    /** 特权信息 */
    private String privilege;

    /**
     * 用户是否订阅该公众号标识，值为0时，代表此用户没有关注该公众号，拉取不到其余信息。
     *
     * @return 0 or 1
     */
    @JsonProperty
    public int getSubscribe() {
        return subscribe;
    }

    /**
     * 用户是否订阅该公众号标识，值为0时，代表此用户没有关注该公众号
     *
     * @param subscribe 0 or 1
     */
    public void setSubscribe(int subscribe) {
        this.subscribe = subscribe;
    }

    /**
     * 用户的标识，对当前公众号唯一
     *
     * @return 用户标识
     */
    public String getOpenid() {
        return openid;
    }

    /**
     * 用户的标识，对当前公众号唯一
     *
     * @param openid 用户标识
     */
    public void setOpenid(String openid) {
        this.openid = openid;
    }

    /**
     * 用户的昵称
     *
     * @return 昵称
     */
    @JsonProperty
    public String getNickname() {
        return nickname;
    }

    /**
     * 用户的昵称
     *
     * @param nickname 用户的昵称
     */
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    /**
     * 用户的性别，值为1时是男性，值为2时是女性，值为0时是未知
     *
     * @return 0/1/2
     */
    @JsonProperty
    public int getSex() {
        return sex;
    }

    /**
     * 用户的性别，值为1时是男性，值为2时是女性，值为0时是未知
     *
     * @param sex 0/1/2
     */
    public void setSex(int sex) {
        this.sex = sex;
    }

    /**
     * 用户的语言，简体中文为zh_CN
     *
     * @return 用户的语言，简体中文为zh_CN
     */
    @JsonProperty
    public String getLanguage() {
        return language;
    }

    /**
     * 用户的语言，简体中文为zh_CN
     *
     * @param language 用户的语言，简体中文为zh_CN
     */
    public void setLanguage(String language) {
        this.language = language;
    }

    /**
     * 用户所在城市
     *
     * @return 用户所在城市
     */
    @JsonProperty
    public String getCity() {
        return city;
    }

    /**
     * 用户所在城市
     *
     * @param city 用户所在城市
     */
    public void setCity(String city) {
        this.city = city;
    }

    /**
     * 用户所在省份
     *
     * @return
     */
    @JsonProperty
    public String getProvince() {
        return province;
    }

    /**
     * 用户所在省份
     *
     * @param province
     */
    public void setProvince(String province) {
        this.province = province;
    }

    /**
     * 用户所在国家
     *
     * @return 用户所在国家
     */
    public String getCountry() {
        return country;
    }

    /**
     * 用户所在国家
     *
     * @param country 用户所在国家
     */
    @JsonProperty
    public void setCountry(String country) {
        this.country = country;
    }

    /**
     * 用户头像，最后一个数值代表正方形头像大小（有0、46、64、96、132数值可选，0代表640*640正方形头像），用户没有头像时该项为空。若用户更换头像，原有头像URL将失效。
     *
     * @return 用户头像
     */
    @JsonProperty
    public String getHeadimgurl() {
        return headimgurl;
    }

    /**
     * 用户头像，最后一个数值代表正方形头像大小（有0、46、64、96、132数值可选，0代表640*640正方形头像），用户没有头像时该项为空。若用户更换头像，原有头像URL将失效。
     *
     * @param headimgurl 用户头像
     */
    public void setHeadimgurl(String headimgurl) {
        this.headimgurl = headimgurl;
    }

    /**
     * 用户关注时间，为时间戳。如果用户曾多次关注，则取最后关注时间
     *
     * @return 用户关注时间
     */
    public long getSubscribe_time() {
        return subscribe_time;
    }

    /**
     * 用户关注时间，为时间戳。如果用户曾多次关注，则取最后关注时间
     *
     * @param subscribe_time 用户关注时间
     */
    public void setSubscribe_time(long subscribe_time) {
        this.subscribe_time = subscribe_time;
    }

    /**
     * 只有在用户将公众号绑定到微信开放平台帐号后，才会出现该字段。详见：获取用户个人信息（UnionID机制）
     *
     * @return
     */
    public String getUnionid() {
        return unionid;
    }

    /**
     * 只有在用户将公众号绑定到微信开放平台帐号后，才会出现该字段。详见：获取用户个人信息（UnionID机制）
     *
     * @param unionid
     */
    public void setUnionid(String unionid) {
        this.unionid = unionid;
    }

    /**
     * 公众号运营者对粉丝的备注，公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
     *
     * @return 备注
     */
    @JsonProperty
    public String getRemark() {
        return remark;
    }

    /**
     * 公众号运营者对粉丝的备注，公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
     *
     * @param remark 备注
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    /**
     * 用户所在的分组ID
     *
     * @return 用户所在的分组ID
     */
    public int getGroupid() {
        return groupid;
    }

    /**
     * 用户所在的分组ID
     *
     * @param groupid 用户所在的分组ID
     */
    public void setGroupid(int groupid) {
        this.groupid = groupid;
    }

    /**
     * 获取特权信息
     * @return 	用户特权信息，json 数组，如微信沃卡用户为（chinaunicom）
     */
    public String getPrivilege() {
        return privilege;
    }

    /**
     * 设置特权信息
     * @param privilege 用户特权信息，json 数组，如微信沃卡用户为（chinaunicom）
     */
    public void setPrivilege(String privilege) {
        this.privilege = privilege;
    }
}
